package Modelo;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import Modelo.Competencia;
import Modelo.Pregunta;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.util.ArrayList;

/**
 *
 * @author Edward
 */
public class AccesoDatosPreguntas {

    Connection conexion;
    ResultSet consulta;

    public AccesoDatosPreguntas() {
    }

    public void conectar() {
        try {
            Class.forName("org.postgresql.Driver");
            conexion = DriverManager.getConnection("jdbc:postgresql://127.0.0.1:5432/sistemaEvaluaciones", "postgres", "admin");
            System.out.println("Se conecto a la base de datos");
        } catch (Exception e) {
            System.out.println("No se pudo conectar a la base de datos " + e);
        }
    }

    public void desconectar() {
        try {
            consulta.close();
            conexion.close();
            System.out.println("Se desconecto correctamente de la base de datos");
        } catch (Exception e) {
            System.out.println("No se pudo desconectar de la base de datos " + e);
        }
    }

    public ArrayList<Pregunta> consultarPreguntasPorCompetencias(String idCompetencias, ArrayList<Pregunta> preguntas) {
        try {
            conectar();
            consulta = conexion.createStatement().executeQuery("select id,texto,tipo,respuesta  from tbl_preguntas where id_competencia = '" + idCompetencias + "'");
            while (consulta.next()) {
                Pregunta pregunta = new Pregunta((consulta.getObject(consulta.getMetaData().getColumnLabel(1)).toString()), consulta.getObject(consulta.getMetaData().getColumnLabel(2)).toString(), consulta.getObject(consulta.getMetaData().getColumnLabel(3)).toString(), consulta.getObject(consulta.getMetaData().getColumnLabel(4)).toString());
                preguntas.add(pregunta);
            }
        } catch (Exception e) {
            System.out.println("Error al intentar consultar preguntas para una evaluacion: " + e);
        }
        return preguntas;
    }

    public int insertarPregunta(Pregunta pregunta) {
        try {
            conectar();
            //if (consultarPreguntasPorId(idpregunta) != true) {
            conexion.createStatement().executeUpdate("insert into tbl_preguntas values('" + pregunta.getId() + "','" + pregunta.getTexto() + "','" + pregunta.getTipo() + "','" + pregunta.getRespuesta() + "','" + pregunta.getId_competencia() + "','" + pregunta.getEstado() + "')");
            desconectar();
            return 1;
            //  }
        } catch (Exception e) {
            System.out.println("Error al intentar insertar una evaluacion: " + e);
        }
        return -1;
    }

    public int eliminarPregunta(String idpregunta) {
        try {
            conectar();
            if (consultarPreguntasPorId(idpregunta)) {
                conexion.createStatement().executeUpdate("Delete from tbl_preguntas where estado='no contestado' and id= '" + idpregunta + "' ");
                desconectar();
                return 1;
            }
        } catch (Exception e) {
            System.out.println("Error al intentar eliminar una pregunta: " + e);
        }
        return -1;
    }

    public boolean consultarPreguntasPorId(String id) {
        try {
            conectar();
            consulta = conexion.createStatement().executeQuery("select * from tbl_preguntas where id = '" + id + "' and estado= 'no contestado'");
            if (consulta.next()) {
                return true;
            }
            desconectar();
        } catch (Exception e) {
            System.out.println("Error al intentar consultar preguntas para una evaluacion: " + e);
        }
        return false;
    }

    public ArrayList<Competencia> consultarCompetencias(ArrayList<Competencia> competencias) {
        try {
            conectar();
            consulta = conexion.createStatement().executeQuery("select *  from tbl_competencias");
            while (consulta.next()) {
                Competencia competencia = new Competencia((consulta.getObject(consulta.getMetaData().getColumnLabel(1)).toString()), consulta.getObject(consulta.getMetaData().getColumnLabel(2)).toString());
                competencias.add(competencia);
            }
            desconectar();
        } catch (Exception e) {
            System.out.println("Error al intentar consultar preguntas para una evaluacion: " + e);
        }
        return competencias;
    }
}
